<?php
	include_once '../../include/inc_session.php';	
	
	// VARIABLE DEVANT CONTENIR L'ÉTAT DE LA PERSONNE À CRÉER
	$sEtat      = '';
	$new_personne = false;
	
	/**
	 * Permet de garder le numéro du contrat en cas de retour.
	 */
	if(isset($_GET['modcontrac']))
	{
		$_SESSION['modcontrac'] = $_GET['modcontrac']; 
		unset($_SESSION['IdPers']);
	}
	
	//RECUPÉRATION DE L'IDENTIFIANT DU CONTRAT ET DE LA DATE D'EFFET
	$oContrat = new dataObject_contrat();
	
	$nIdcontrat = $oContrat->contrat_getIdFromNumContrat($_SESSION['modcontrac']);
	$dDateEffet = $oContrat->contrat_getDateEffet($nIdcontrat);
	
	//RÉCUPÉRATION DE L'IDENTIFIANT DE L'OFFRE DU PRODUIT ET DE LA FORMULE
	$aFpoc = $oContrat->getFormuleProduitOffreDuContrat($nIdcontrat);
	$nIdOffre = $aFpoc[0]['Identifiant_offre'];//echo $nIdOffre;
	$nIdProduit = $aFpoc[0]['Identifiant_produit'];//echo $nIdProduit;
	$nIdFormule = $aFpoc[0]['Identifiant_formule'];//echo $nIdFormule;
	 
	//RECUPERATION DU TYPE DE PERSONNE SELON L'INTERVENANT CHOISI.
	$sTypeValue = '';
	if(isset($_GET['tp']))
	{
		$sTypeValue = $_GET['tp'];	
		$_SESSION['tp'] = $_GET['tp'];
	}
	elseif(isset($_SESSION['tp']))
	{
		$sTypeValue = $_SESSION['tp'];
	}
	else
	{
		$sTypeValue		 =  (isset($_POST['FS_Type_personne']))    ?  htmlentities($_POST['FS_Type_personne'])    : 'M';
	}

	// construction de l’objet Template
	if($sTypeValue=='P') $oPageEdit = new Template(PATH_TEMPLATE.'tpl_addt_modcont.html');
	else $oPageEdit = new Template(PATH_TEMPLATE.'tpl_addt_modcont_mor.html');
	//remplacement simple
	$oPageEdit->replace('nom_module', "Production");
	$oPageEdit->replace('nom_fonction', "Modification Contractuelle");
	$oPageEdit->replace('nom_element',"Détail Intervenant");
	$oPageEdit->replace('edit_action', "addtpersonne.php"); //$sEditFormAction
	
	/**
	 * Récupération des valeurs envoyées par le formulaire.
	 */
	
	$sRaisonSociale  =  (isset($_POST['ORS_Raison_sociale']))  ?  htmlentities($_POST['ORS_Raison_sociale'])  : '';
	$sNomPersonne    =  (isset($_POST['ONO_Nom_personne']))    ?  htmlentities($_POST['ONO_Nom_personne'])    : '';
	$sPrenomPersonne =  (isset($_POST['OPN_Prenom_personne'])) ?  htmlentities($_POST['OPN_Prenom_personne']) : '';
	$sNomJFille      = 	(isset($_POST['FJF_Nom_jeune_fille'])) ?  htmlentities($_POST['FJF_Nom_jeune_fille']) : '';
	$sDateNaissance  = 	(isset($_POST['ODN_Date_naissance']))  ?  htmlentities($_POST['ODN_Date_naissance'])  : '';
	$sLieuNaissance  = 	(isset($_POST['OLN_lieu_naissance']))  ?  htmlentities($_POST['OLN_lieu_naissance'])  : '';
	$sProfession     = 	(isset($_POST['FPR_Profession']))      ?  htmlentities($_POST['FPR_Profession'])      : '';
	$sEmployeur      = 	(isset($_POST['FLN_Employeur']))       ?  htmlentities($_POST['FLN_Employeur'])       : '';
	$sCivilite       =  (isset($_POST['FS_Civilite']))         ?  $_POST['FS_Civilite']         : '';
	$sSexe           = 	(isset($_POST['FS_Sexe']))             ?  $_POST['FS_Sexe']             : '';
	$sTypeAssure     = 	(isset($_POST['FS_Type_dassure']))     ?  $_POST['FS_Type_dassure']     : '';
	$sTypeRole        = 	(isset($_POST['FS_Type_role']))        ?  $_POST['FS_Type_role']        : '';
	
	$_SESSION['RS']  = $sRaisonSociale;
	$_SESSION['NP']  = $sNomPersonne;
	$_SESSION['PP']  = $sPrenomPersonne;
	$_SESSION['NJF'] = $sNomJFille;
	$_SESSION['DN']  = $sDateNaissance;
	$_SESSION['LN']  = $sLieuNaissance;
	$_SESSION['PR']  = $sProfession;
	$_SESSION['EMP'] = $sEmployeur;
	$_SESSION['CV']  = $sCivilite;
	$_SESSION['SX']  = $sSexe;  	
	$_SESSION['TA']  = $sTypeAssure;
	$_SESSION['TR']  = $sTypeRole;  	
	
	
	//RÉCUPÉRATION DE L'IDENTIFIANT DU CONTRAT DE LA DATE D'EFFET
	$oContrat = new dataObject_contrat();
	$nIdcontrat = $oContrat->contrat_getIdFromNumContrat($_SESSION['modcontrac']);
	$dDateEffet = $oContrat->contrat_getDateEffet($nIdcontrat);
	
	//RECHERCHE SUR LES CONDITIONS DE VENTE DE TYPE JUSTIFICATIF LIEES À CERTAINS CRITÈRES.
	$oCondtVente = new dataObject_conditionVente();
	$ncdtv = $oCondtVente->get_conditionVenteJustContrat($nIdcontrat,$dDateEffet);
	if($ncdtv>0) $_SESSION['justificatif'] = true;
	else unset($_SESSION['justificatif']);
	
	//RECHERCHE SI LE PRODUIT LIÉ AU CONTRAT À DES GARANTIES OPTIONNELLES; ON RETOURNE L'IDENTIFIANT DU PRODUIT.
	$oProduit = new dataObject_produit();
	$nIdProdGarn = $oProduit->getProduitGarantieOptionnelle($nIdcontrat);
	
	//RECHERCHE DES CONDITIONS DE VENTE DE TYPE LIMITE APPLICABLES À LA DATE D'EFFET DU CONTRAT EN COURS POUR L'OFFRE ET LE PRODUIT LIÉS.
	$oCondtVenteLim = new dataObject_conditionVente();
	$aCdtvLim = $oCondtVenteLim->get_condVenteLimOffProdContrat($nIdcontrat,$dDateEffet);
	
	//ON CALCULE L'AGE DE LA PERSONNE
	if(isset($_POST['valider']))
	{
		$oPersonne = new dataObject_personne();
		$nAge = $oPersonne->personne_getAge($_POST['ODN_Date_naissance']);//////////////////////////
	
	
	
	/**
	 * Si parmi les conditions de vente, 
	 * il existe une condition de vente de code AGMIA ou AGMIE (âge minimum adulte ou enfant) 
	 * ou AGMAA ou AGMAE (âge maximum adulte ou enfant), contrôler la date de naissance.
	 * Valeur_condition_vente
	 */
	if(($aCdtvLim != null) && ($sTypeValue=="P"))
	{
		foreach ($aCdtvLim as $iKey => $aelmt)
		{
			if( $sTypeAssure== dataObject_elementdico::TYP_ASSURE_ENFANT)
			{
				if( ($aelmt['Code_condition_vente']=="AGMIE") && ($nAge < $aelmt['Valeur_condition_vente']) )
				{
					$oForm->ajouterErreur(condition_vente_personne_jeune);
					$gbFormValid = false;
				}
				
				if( ($aelmt['Code_condition_vente']=="AGMAE") && ($nAge > $aelmt['Valeur_condition_vente']) ){
					$oForm->ajouterErreur(condition_vente_personne_agee);
					$gbFormValid = false;
				}
				
			}
			else
			{ //si type assuré adulte (différent de enfant)
				if( ($aelmt['Code_condition_vente']=="AGMIA") && ($nAge < $aelmt['Valeur_condition_vente']) )
				{
					$oForm->ajouterErreur(condition_vente_personne_jeune);
					$gbFormValid = false;
				}
				
				if( ($aelmt['Code_condition_vente']=="AGMAA") && ($nAge > $aelmt['Valeur_condition_vente']) )
				{
					$oForm->ajouterErreur(condition_vente_personne_agee);
					$gbFormValid = false;
				}
			}	
		}
	}
	
	}
	
	//CONTROLE SUR LE TYPE DE ROLE DE LA PERSONNE À EDITER
	$acdtvBen = $oCondtVente->conditionVente_clauseBeneProdOffreContrat($nIdcontrat,$dDateEffet);
	if($gbFormValid)
	{
		
		if($_POST['FS_Type_role']=="S")
		{
			$oForm->ajouterErreur(contrat_plus_souscripteur);
			$gbFormValid = false;
		}
		
		$arole = $oContrat->contrat_getRoledeTypeBFromIdContrat($nIdcontrat);
	
		if(($_POST['FS_Type_role']== "B") )
		{
			if(!empty($arole))
			{
				$oForm->ajouterErreur(contrat_plus_beneficiaire);
				$gbFormValid = false;
			}
			else 
			{
				
				if(($acdtvBen == null) )
				{
					$oForm->ajouterErreur(condition_vente_clause_beneficiare);
					$gbFormValid = false;
				}
			}
		}
		
	}
	
	/**
	 * Si le formulaire est validé
	 */
	if(isset($_POST['valider']) && $gbFormValid)
	{ //données du formulaire validées, on fait la mise à jour	
		$oPersonne = new dataObject_personne();
		
		//On vérifie si la personne saisie existe déjà.
		if($sTypeValue == "P")
		{
			$sIdPers = $oPersonne->personne_selectId_physique($sTypeValue,"A",$_SESSION['NP'],$_SESSION['PP'],$_SESSION['CV'],$_SESSION['NJF'],$_SESSION['DN'],$_SESSION['LN'],$_SESSION['SX'],$_SESSION['PR'],$_SESSION['EMP']);
		}
		else
		{
			$sIdPers = $oPersonne->personne_selectId_morale($sTypeValue,"A",$_SESSION['RS']);												 
		}
		
		//echo "session :: ".$_SESSION['IdPers'];
		
		//Si la personne existe on le signale
		if($sIdPers != null)
		{
			$oForm->ajouterErreur(personne_existe);
		}
		elseif(!isset($_SESSION['IdPers']))
		{//Si la personne n'existe pas on la crée.
			/**
			 * La création de la personne est accompagnée de la création du role qui lui est associé 
			 * et des garanties souscrites
			 */			
			$oPersonneInsert = new dataObject_personne();
			
			$oPersonneInsert->_TYPE_PERSONNE 				= $sTypeValue;
			$oPersonneInsert->_ETAT_PERSONNE				= "A";
			$oPersonneInsert->_NOM_PERSONNE 				= $_SESSION['NP'];
			$oPersonneInsert->_PRENOM_PERSONNE 				= $_SESSION['PP'];
			$oPersonneInsert->_CIVILITE_PERSONNE 			= $_SESSION['CV'];
			$oPersonneInsert->_NOM_JEUNE_FILLE_PERSONNE 	= $_SESSION['NJF'];
			$oPersonneInsert->_RAISON_SOCIALE		 		= $_SESSION['RS'];
			$oPersonneInsert->_DATE_NAISSANCE_PERSONNE 		= $_SESSION['DN'];
			$oPersonneInsert->_LIEU_NAISSANCE_PERSONNE 		= $_SESSION['LN'];
			$oPersonneInsert->_SEXE_PERSONNE 				= $_SESSION['SX'];
			$oPersonneInsert->_PROFESSION_PERSONNE 			= $_SESSION['PR'];
			$oPersonneInsert->_EMPLOYEUR_PERSONNE 			= $_SESSION['EMP'];
			
			
			$sinsert = $oPersonneInsert->insertPersonneRole($_POST['FS_Type_dassure'], $_POST['FS_Type_role'],$nIdcontrat,$nIdOffre,$nIdProduit,$nIdFormule, $acdtvBen);
			//var_dump($sinsert);
			
			//$binsert = $oPersonneInsert->personne_insert();
			//echo $sinsert;
			$tab = explode("-",$sinsert);
			
			if($tab[0]){//création personne
				
				if($tab[1]){//création role du contrat
					
					if(($tab[3]=="A") && $tab[2])
					{//création garanties souscrites
						$oForm->ajouterErreur(personne_creer);
						$new_personne = true;
						$_SESSION['personneCreerRat'] = 1;
					}else
					{
						$oForm->ajouterErreur(garantiesosusrite_creer_probleme);
					}
					
					if(($tab[3]=="A") && $tab[3])
					{ //modification clause bénéficicaire
						$_SESSION['IdPers'] = $tab[0];//ON RÉCUPÈRE L'IDENTIFIANT DE LA PERSONNE CRÉÉE DANS LA VARIABLE SESSION $_SESSION['IdPers'].
						$oTypepers 	= new dataObject_personne($tab[0]);
						$sEtat      = $oTypepers->_ETAT_PERSONNE;//RÉCUPÉRATION DE L'ÉTAT DE LAPERSONNE CRÉÉE.
						$oForm->ajouterErreur(personne_creer);
						$new_personne = true;
						$_SESSION['personneCreerRat'] = 1;
					}else
					{
						$oForm->ajouterErreur(contrat_modification_clause_probleme);
					}
					
				}else{
					$oForm->ajouterErreur(contrat_creer_role_probleme);
				}
					
			}else{
				$oForm->ajouterErreur(personne_creer_probleme);
			}
			
		}else
		{//SI LA PERSONNE VIENT D'ÊTRE NOUVELLEMENT CRÉÉE. DANS CE CAS ON MET À JOUR SON COMPTE.
			$oForm->ajouterErreur(personne_modifiee);
		}											 
	}
		
	$oElementDico = new dataObject_elementdico();
	
	//--- CONSTRUCTION LISTE TYPES D'ASSURÉ M0003
	$asListTypeAssure = $oElementDico->elementdico_getListFromCode(dataObject_dictionnaire::TYPE_ASSURE); 
	$aOptions4  = array();
	$aOptions4[0] = array('option_value_4'=>-1,'option_name_4'=>'');
	foreach ($asListTypeAssure as $ikey => $aelmt)
	{
		$aOpt = array('option_value_4'=>$aelmt['Code_element'],'option_name_4'=>$aelmt['Nom_element']);
		if($aelmt['Code_element']==$sTypeAssure)$aOpt = array_merge($aOpt, array("selected_4"=> true));
		$aOptions4[$ikey+1] = $aOpt;
	}
	
	
	//--- CONSTRUCTION DE LA LISTE TYPES DE ROLE T0006 ----
	$asListTypeRole = $oElementDico->elementdico_getListFromCode(dataObject_dictionnaire::_TYPE_ROLE);
	$aOptions5  = array();
	foreach ($asListTypeRole as $ikey => $aelmt)
	{
		$aOpt = array('option_value_5'=>$aelmt['Code_element'],'option_name_5'=>$aelmt['Nom_element']);
		if($aelmt['Code_element']==$sTypeRole)$aOpt = array_merge($aOpt, array("selected_5"=> true));
		$aOptions5[$ikey] = $aOpt;
	}
	
	//--- CONSTRUCTION DE LA LISTE TYPE DE PERSONNE
	$asListTypepers = $oElementDico->elementdico_getListFromCode(dataObject_dictionnaire::_TYPE_PERSONNE);
	
	$aOptions1 = array();

	foreach ($asListTypepers as $iKey => $aelmt)
	{
		$aOpt = array('option_value_1'=>$aelmt['Code_element'],'option_name_1'=>$aelmt['Nom_element']);		         
		if($aelmt['Code_element']==$sTypeValue)$aOpt = array_merge($aOpt, array("selected_1"=> true));
		$aOptions1[$iKey] = $aOpt;
	}
	//--- FIN CONSTRUCTION LISTE TYPE DE PERSONNE
	
	
	switch($sTypeValue)
	{
		
		case "M": // CONTSTRUCTION FORMULAIRE PERSONNE MORALE
			
			$asInputs = array(array('label_select_1'=>'TYPE PERSONNE','select_name_1'=>'FS_Type_personne', 'select_id_1'=>'cChamp', 'onchange_1'=>'changeType(this.value)'),
							  array('label_input'=>'RAISON SOCIALE','input_name'=>'ORS_Raison_sociale', 'input_value'=> $_SESSION['RS'], 'size'=>'50', 'class'=>'resize_2'),
							  array('label_select_4'=>"TYPE ASSURÉ",'select_name_4'=>'FS_Type_dassure'),
							  array('label_select_5'=>'TYPE ROLE','select_name_5'=>'FS_Type_role')
		   					  );
			break;
		   	
		case "P": // CONSTRUCTION DU FORMULAIRE PERSONNE PHYSIQUE
			$asInputs = array(array('label_select_1'=>'TYPE PERSONNE','select_name_1'			=>'FS_Type_personne', 'onchange_1'=>'changeType(this.value)'),
							  array('label_input'	=>'NOM','input_name'				=>'ONO_Nom_personne', 'input_value'		=> $sNomPersonne, 'size'	=>'50', 'class'=>'resizeall', 'maxlength'=>30),
							  array('label_input'	=>'PRENOM','input_name'				=>'OPN_Prenom_personne', 'input_value'	=> $sPrenomPersonne, 'size'	=>'50', 'class'=>'resizeall', 'maxlength'=>30),
							  array('label_select_2'=>'CIVILITE','select_name_2'		=>'FS_Civilite'),
							  array('label_input'	=>'NOM JEUNE FILLE','input_name'  	=>'FJF_Nom_jeune_fille', 'input_value'	=> $sNomJFille, 'size'		=>'50', 'class'=>'resizeall', 'maxlength'=>30),
							  array('label_input'	=>'DATE DE NAISSANCE','input_name'	=>'ODN_Date_naissance', 'input_value'	=> $sDateNaissance, 'size'	=>'20', 'class'=>'resize_1', 'maxlength'=>10),
							  array('label_input'	=>'LIEU DE NAISSANCE','input_name'	=>'OLN_lieu_naissance', 'input_value'	=> $sLieuNaissance, 'size'	=>'50', 'class'=>'resizeall', 'maxlength'=>30),
							  array('label_select_3'=>'SEXE','select_name_3'          	=>'FS_Sexe'),
							  array('label_input'	=>'PROFESSION','input_name'			=>'FPR_Profession', 'input_value'		=> $sProfession, 'size'		=>'50', 'class'=>'resizeall', 'maxlength'=>30),
							  array('label_input'	=>'EMPLOYEUR','input_name'			=>'FLN_Employeur', 'input_value'		=> $sEmployeur, 'size'		=>'50', 'class'=>'resizeall', 'maxlength'=>30),
							  array('label_select_5'=>'TYPE ROLE','select_name_5'=>'FS_Type_role'),
							  array('label_select_4'=>"TYPE ASSURÉ",'select_name_4'=>'FS_Type_dassure')
		   					  );
		   					  
			
			//--- CONSTRUCTION DES LISTES CYVILITE & SEXE
			$asListCivilite = $oElementDico->elementdico_getListFromCode("M0001");
			$asListSexe = $oElementDico->elementdico_getListFromCode("M0002");
				   	
			$aOptions2 = array();
			$aOptions3 = array();
			
			foreach ($asListCivilite as $iKey => $aelmt)
			{
				$aOpt = array('option_value_2'=>$aelmt['Code_element'],'option_name_2'=>$aelmt['Nom_element']);		         
				if($aelmt['Code_element']==$sCivilite)$aOpt = array_merge($aOpt, array("selected_2"=> true));
				$aOptions2[$iKey] = $aOpt;
			}
			
			foreach ($asListSexe as $iKey => $aelmt)
			{
				$aOpt = array('option_value_3'=>$aelmt['Code_element'],'option_name_3'=>$aelmt['Nom_element']);		         
				if($aelmt['Code_element']==$sSexe)$aOpt = array_merge($aOpt, array("selected_3"=> true));
				$aOptions3[$iKey] = $aOpt;
			}
			//--- FIN CONSTRUCTION LISTES CYVILITE & SEXE	
			$oPageEdit->iterateReplace('options_2', $aOptions2);
			$oPageEdit->iterateReplace('options_3', $aOptions3);
			break;
			
		default:
			$asInputs = array(array('label_select_1'=>'TYPE PERSONNE','select_name_1'=>'FS_Type_personne','onchange_1'=>'changeType(this.value)'),
							  array('label_input'=>'RAISON SOCIALE','input_name'=>'ORS_Raison_sociale', 'input_value'=> '', 'size'=>'50', 'class'=>'resize_2', 'maxlength'=>30)
		   					  );
		   	break;
	}	
	
	//ON ENCAPSULE LES ELEMENTS CRÉÉS
	$oPageEdit->iterateReplace('options_1', $aOptions1);
	$oPageEdit->iterateReplace('options_4', $aOptions4);
	$oPageEdit->iterateReplace('options_5', $aOptions5);
	$oPageEdit->iterateReplace('champ_input', $asInputs);
	
	
	if(isset($_SESSION['IdPers']))
	{
		$oPageEdit->replace('url_Adresse',"adressemc/index.php?Identifiant_personne=".$_SESSION['IdPers']);
		$oPageEdit->replace('url_Communication',"communicationmc/index.php?Identifiant_personne=".$_SESSION['IdPers']);
		//$oPageEdit->replace('url_Granties',"../garantieoptionnelles/index.php?Identifiant_personne=".$_SESSION['IdPers']);
		$oPageEdit->replace('url_refenrences',"refexternemc/index.php?Identifiant_personne=".$_SESSION['IdPers']);
		//$oPageEdit->replace('url_jutificatifs',"../justificatifs/index.php?Identifiant_personne=".$_SESSION['IdPers']);
		
		//if(($nIdProdGarn > 0) && ($sEtat =="A"))
		if(isset($_SESSION['gar_optionnel']) && ($_SESSION['gar_optionnel'] == true) && ($_SESSION['TR'] == 'A') )
		{
			$oPageEdit->replace('url_Garanties',"garantieoptionnellesmc/index.php?Identifiant_personne=".$_SESSION['IdPers']);
		}
		else
		{
			$oPageEdit->replace('url_Garanties',"#");	
		}
		
		//if($ncdtv > 0)
		if(isset($_SESSION['justificatif']) && ($_SESSION['justificatif'] == true))
		{
			$oPageEdit->replace('url_jutificatifs',"justificatifsmc/index.php?Identifiant_personne=".$_SESSION['IdPers']);
		}else{
			$oPageEdit->replace('url_jutificatifs',"#");
		}
		
	}
	else
	{
		$oPageEdit->replace('url_Adresse',"#");	
		$oPageEdit->replace('url_Communication',"#");
		$oPageEdit->replace('url_Garanties',"#");
		$oPageEdit->replace('url_refenrences',"#");
		$oPageEdit->replace('url_jutificatifs',"#");
	}

	$oPageEdit->replace('url_Annuler',"index.php?idbloc=".$_SESSION['idbloc']."&idfonction=".$_SESSION['idfonction']."&idc=".$_SESSION['modcontrac']);
	$oPageEdit->replace('url_Retour',"index.php?idbloc=".$_SESSION['idbloc']."&idfonction=".$_SESSION['idfonction']."&idc=".$_SESSION['modcontrac']);	
	
	//affichage message d'erreur
	$oPageEdit->iterateReplace('messages', $oForm->getValidMessage());
	
	/***** affichage de la page ainsi parametrée *****/
	echo $oPageEdit->toString();
	
	include_once '../../include/inc_pied_page.php';
?>